package com.zb.activemq.queue;

import org.apache.activemq.command.ActiveMQObjectMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.listener.SessionAwareMessageListener;

import javax.annotation.Resource;
import javax.jms.*;

/**
 * 点对点消息消费者  1
 * <p>
 * 作者: zhoubang
 * 日期：2015年9月28日 上午10:10:28
 */
public class QueueConsumer1 implements SessionAwareMessageListener {

    @Resource(name = "queueJmsTemplate")
    private JmsTemplate jmsTemplate;

    /**
     * 消息目的地
     */
    @Resource(name = "queueDestination")
    private Queue defaultDestination;


    @Override
    public void onMessage(Message message, Session session) throws JMSException {
        System.out.println();
        System.out.println("【queue消息消费者1】接收到了消息...原生消息的信息如下(未转换之前的消息)：" + message);
        //ActiveMQTextMessage om = (ActiveMQTextMessage) m;

        //由于消息是一个实体bean，所以使用ActiveMQObjectMessage，如果是文本，则使用ActiveMQTextMessage
        ActiveMQObjectMessage om = (ActiveMQObjectMessage) message;
        session.rollback();
//        session.recover();
        session.commit();
        try {
            System.out.println("实体bean消息:" + om.getObject());
        } catch (JMSException e) {
            e.printStackTrace();
        }
        System.out.println();
        System.out.println("消息的其他信息：");
        System.out.println("目的地destination:" + om.getJMSDestination());
        System.out.println("type:" + om.getJMSType());
        System.out.println("messageId:" + om.getJMSMessageID());
        System.out.println("time:" + om.getJMSTimestamp());
        System.out.println("priority:" + om.getJMSPriority());
    }
}
